1. Field of the Invention
The present invention generally relates to information technology. More specifically, the present invention relates to querying, processing, and exchanging data using different data stores, applications, and processors.
2. Description of the Related Art
Computers have made dramatic advances in their ability to store, process, and communicate information. This rapid advancement in computer science is, in large part, a credit to breakthroughs in chip design, software programming, and networking technologies. Notwithstanding these advances, there is a continued—and increasing—need for the storage of more data in less space and the processing of more information in less time and with increased accuracy. The ability to process information within a computer system (including the storage and transmission of that information) is largely governed by two factors: processor speed and the number of logical or computational steps required for the processing of that information (or any particular segment thereof). While clock speeds of processors continue to increase, the number of processing steps required to accomplish certain natural tasks is logically determined and often with stringent limitations.
Computer programming involves manipulating data structures and their component data using algorithmic instructions written in languages utilizing precise and pre-defined processing rules. Certain processes are fundamental yet inherently complex. With respect to these processes, no amount of ingenuity can reduce the associated complexity or number of steps beyond a certain threshold. In this regard, computational complexity in the 21st century may be analogized to the 19th century's physical problem of friction with the dawn of the machine age where physical scientists had to learn how to reduce or disperse friction in order to move objects efficiently. Similar understandings and planning are now necessary to minimize the computational complexity associated with constructing and managing data.
Until recently, there has been no known data structure that could be used as a base for other container data structures. In particular there was no binary representation for the node-labeled tree data type. The node-labeled tree data type is a data type of increasing importance as interactions with the likes of the World Wide Web continue to grow. For example, the Extensible Markup Language (XML) standard has become an increasingly popular language based on the node-labeled tree data type since presentation of the World Wide Web Consortium specification (XML 1.0) in 1998.
Notwithstanding the growing popularity of XML, there has been (and remains) a continued drive to construct separate programming languages that are designed to fit naturally into different cognitive application areas. The Structured Query Language (SQL) developed by International Business Machines in the 1970s is an example of a programming language for relational databases, finite tables, and two dimensional sequences. C, developed in 1972 by Bell Telephone Laboratories for the Unix operating system, is a general-purpose, block structured, procedural, imperative computer programming language that handles strings and one dimensional sequences. Prolog is a further example of a logic programming language developed in the 1970s and associated with user interfaces and artificial intelligence applications and otherwise capable of handling finite sets and trees.
Multiple languages frustrate processing and interchange of information. Differences in data type and associated programming language create bottlenecks in the exchange and analysis of data and information derived from the same. There is a need for a processing model that allows for ease of processing and interchange of information between various data stores utilizing disparate data types and programming languages. As eighty percent of data is semi-structured and heaps, strings, and trees are the fundamental atomic data structures of this semi-structured data, there is a need for a single underlying data index system or coordination language that could represent and coordinate programming activity between and within different data types.